--
-- Created by IntelliJ IDEA.
-- User: Administrator
-- Date: 2015/10/30
-- Time: 17:54
-- To change this template use File | Settings | File Templates.
--  1:�特等� 2:1等�� 3:2等�� 4:3等��....
--local result={}

local k1_date = KEYS[1] --当前日期
local key_git = "git_" .. k1_date
local gits = redis.call('hmget', key_git, '1', '2', '3', '4', '5', '6', '7')
local k2_local = KEYS[2] --是否区域内
local k3_random = math.floor(KEYS[3]) --随机数
local loginNo = redis.call('hget', 'login_time', k1_date)
loginNo = math.floor(loginNo)
redis.call('HINCRBY', 'login_time', k1_date, 1)

for i = 1, #gits do
    gits[i] = math.floor(gits[i])
end

local randomGit = function(L, H, gits, random)
    --local gits=redis.call('hmget','git_2015-11-2','1','2','3','4','5','6','7')
    local totalGits = 0
    local nG = { 0, 0, 0, 0, 0, 0, 0 }
    for i = L, H do
        totalGits = gits[i] + totalGits
        nG[i] = totalGits
    end
    local git = -1
    if totalGits <= 0 then
        return -1
    end
    --    local rand=math.random(1,totalGits)
    local rand = math.floor(random / 10000 * totalGits) + 1
    -- print("Random:",rand)
    for i = L, H do
        if nG[i] >= rand then
            git = i
            break
        end
    end
    return math.floor(git)
end

if (gits[1] + gits[2] + gits[3] + gits[4] + gits[5] + gits[6] + gits[7] == 0) then
    return -1
end

local g = -1
if (k2_local == '0') then
    g = randomGit(6, 7, gits, k3_random)
else
    g = randomGit(3, 5, gits, k3_random)

    if loginNo >= 150 and gits[2] >= 1 then
        g = 2
    end

    if loginNo >= 125 and gits[2] >= 2 then
        g = 2
    end

    if loginNo >= 100 and gits[1] >= 1 then
        g = 1
    end

    if loginNo >= 75 and gits[2] >= 3 then
        g = 2
    end

    if loginNo >= 50 and gits[2] >= 4 then
        g = 2
    end

    if loginNo >= 30 and gits[1] >= 2 then
        g = 1
    end

    if loginNo >= 25 and gits[2] >= 5 then
        g = 2
    end

    if loginNo >= 10 and gits[2] >= 6 then
        g = 2
    end

    if g == -1 then
        g = randomGit(6, 7, gits, k3_random)
    end
end

if g > 0 and gits[g] > 0 then
    gits[g] = gits[g] - 1
    --    redis.call('hmset', 'git_2015-11-2','1',gits[1],'2',gits[2],'3',gits[3],'4',gits[4],'1',gits[1],'1',gits[1],'1',gits[1]);
    redis.call('hset', key_git, g, gits[g])
else
    g = -1
end
return g
